home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / public / Xprof / xprof / table.c < prev    next >
C/C++ Source or Header  |  1994-08-01  |  21KB  |  456 lines

  1. /*==================================================================
  2.  *      File :          table.c
  3.  *      Package:        Xprof
  4.  *
  5.  *      Author :        Aloke Gupta.
  6.  *
  7.  *  (C) Copyright 1992, Aloke Gupta.
  8.  *==================================================================*/
  9.  
  10. #include <stdio.h>
  11. #include "common.h"
  12. #include "profile.h"
  13.  
  14. extern long OpenFont();        /* Opcode 45 */
  15. extern long CloseFont();    /* Opcode 46 */
  16.  
  17. extern long CreateGC();        /* Opcode 55 */
  18. extern long ChangeGC();        /* Opcode 56 */
  19. extern long CopyGC();        /* Opcode 57 */
  20.  
  21. extern long FreeGC();        /* Opcode 60 */
  22. extern long ClearArea();    /* Opcode 61 */
  23. extern long CopyArea();        /* Opcode 62 */
  24. extern long CopyPlane();    /* Opcode 63 */
  25. extern long PolyPoint();    /* Opcode 64 */
  26. extern long PolyLine();        /* Opcode 65 */
  27. extern long PolySegment();    /* Opcode 66 */
  28. extern long PolyRectangle();    /* Opcode 67 */
  29.  
  30. extern long PolyFillRectangle();/* Opcode 70 */
  31.  
  32. extern long PutImage();        /* Opcode 72 */
  33. extern long GetImage();        /* Opcode 73 */
  34. extern long PolyText8();    /* Opcode 74 */
  35. extern long PolyText16();    /* Opcode 75 */
  36. extern long ImageText8();    /* Opcode 76 */
  37. extern long ImageText16();    /* Opcode 77 */
  38.  
  39. extern MsgStats RequestStats[];
  40. extern MsgStats ReplyStats[];
  41. extern MsgStats EventStats[];
  42. extern MsgStats ErrorStats[];
  43.  
  44. long default_request();
  45. long default_reply();
  46. long default_event();
  47. long default_error();
  48.  
  49. /* 
  50.  * The following arrays contain the symbolic names of the X messages and the
  51.  * actions to be taken to process them.
  52.  */
  53.  
  54. MsgType RequestType[]={
  55.   0, "Undefined Request",      WIN, default_request,    TERSE,      GRAIN1,
  56.   1, "CreateWindow",           WIN, default_request,    TERSE,      GRAIN1,
  57.   2, "ChangeWindowAttributes", WIN, default_request,    TERSE,      GRAIN1,
  58.   3, "GetWindowAttributes",    WIN, default_request,    TERSE,      GRAIN1,
  59.   4, "DestroyWindow",          WIN, default_request,    TERSE,      GRAIN1,
  60.   5, "DestroySubwindows",      WIN, default_request,    TERSE,      GRAIN1,
  61.   6, "ChangeSaveSet",          WIN, default_request,    TERSE,      GRAIN1,
  62.   7, "ReparentWindow",         WIN, default_request,    TERSE,      GRAIN1,
  63.   8, "MapWindow",              WIN, default_request,    TERSE,      GRAIN1,
  64.   9, "MapSubwindows",          WIN, default_request,    TERSE,      GRAIN1,
  65.  10, "UnmapWindow",            WIN, default_request,    TERSE,      GRAIN1,
  66.  11, "UnmapSubwindows",        WIN, default_request,    TERSE,      GRAIN1,
  67.  12, "ConfigureWindow",        WIN, default_request,    TERSE,      GRAIN1,
  68.  13, "CirculateWindow",        WIN, default_request,    TERSE,      GRAIN1,
  69.  14, "GetGeometry",            WIN, default_request,    TERSE,      GRAIN1,
  70.  15, "QueryTree",              WIN, default_request,    TERSE,      GRAIN1,
  71.  16, "InternAtom",             WIN, default_request,    TERSE,      GRAIN1,
  72.  17, "GetAtomName",            WIN, default_request,    TERSE,      GRAIN1,
  73.  18, "ChangeProperty",         WIN, default_request,    TERSE,      GRAIN1,
  74.  19, "DeleteProperty",         WIN, default_request,    TERSE,      GRAIN1,
  75.  20, "GetProperty",            WIN, default_request,    TERSE,      GRAIN1,
  76.  21, "ListProperties",         WIN, default_request,    TERSE,      GRAIN1,
  77.  22, "SetSelectionOwner",      WIN, default_request,    TERSE,      GRAIN1,
  78.  23, "GetSelectionOwner",      WIN, default_request,    TERSE,      GRAIN1,
  79.  24, "ConvertSelection",       WIN, default_request,    TERSE,      GRAIN1,
  80.  25, "SendEvent",              WIN, default_request,    TERSE,      GRAIN1,
  81.  26, "GrabPointer",            WIN, default_request,    TERSE,      GRAIN1,
  82.  27, "UngrabPointer",          WIN, default_request,    TERSE,      GRAIN1,
  83.  28, "GrabButton",             WIN, default_request,    TERSE,      GRAIN1,
  84.  29, "UngrabButton",           WIN, default_request,    TERSE,      GRAIN1,
  85.  30, "ChangeActivePointerGrab",WIN, default_request,    TERSE,      GRAIN1,
  86.  31, "GrabKeyboard",           WIN, default_request,    TERSE,      GRAIN1,
  87.  32, "UngrabKeyboard",         WIN, default_request,    TERSE,      GRAIN1,
  88.  33, "GrabKey",                WIN, default_request,    TERSE,      GRAIN1,
  89.  34, "UngrabKey",              WIN, default_request,    TERSE,      GRAIN1,
  90.  35, "AllowEvents",            WIN, default_request,    TERSE,      GRAIN1,
  91.  36, "GrabServer",             WIN, default_request,    TERSE,      GRAIN1,
  92.  37, "UngrabServer",           WIN, default_request,    TERSE,      GRAIN1,
  93.  38, "QueryPointer",           WIN, default_request,    TERSE,      GRAIN1,
  94.  39, "GetMotionEvents",        WIN, default_request,    TERSE,      GRAIN1,
  95.  40, "TranslateCoordinates",   WIN, default_request,    TERSE,      GRAIN1,
  96.  41, "WarpPointer",            WIN, default_request,    TERSE,      GRAIN1,
  97.  42, "SetInputFocus",          WIN, default_request,    TERSE,      GRAIN1,
  98.  43, "GetInputFocus",          WIN, default_request,    TERSE,      GRAIN1,
  99.  44, "QueryKeymap",            WIN, default_request,    TERSE,      GRAIN1,
  100.  45, "OpenFont",               WIN, OpenFont,        TERSE,      GRAIN1,
  101.  46, "CloseFont",              WIN, CloseFont,        TERSE,      GRAIN1,
  102.  47, "QueryFont",              WIN, default_request,    TERSE,      GRAIN1,
  103.  48, "QueryTextExtents",       WIN, default_request,    TERSE,      GRAIN1,
  104.  49, "ListFonts",              WIN, default_request,    TERSE,      GRAIN1,
  105.  50, "ListFontsWithInfo",      WIN, default_request,    TERSE,      GRAIN1,
  106.  51, "SetFontPath",            WIN, default_request,    TERSE,      GRAIN1,
  107.  52, "GetFontPath",            WIN, default_request,    TERSE,      GRAIN1,
  108.  53, "CreatePixmap",           WIN, default_request,    TERSE,      GRAIN1,
  109.  54, "FreePixmap",             WIN, default_request,    TERSE,      GRAIN1,
  110.  55, "CreateGC",               WIN, CreateGC,        TERSE,      GRAIN1,
  111.  56, "ChangeGC",               WIN, ChangeGC,        TERSE,      GRAIN1,
  112.  57, "CopyGC",                 WIN, CopyGC,        TERSE,      GRAIN1,
  113.  58, "SetDashes",              WIN, default_request,    TERSE,      GRAIN1,
  114.  59, "SetClipRectangles",      WIN, default_request,    TERSE,      GRAIN1,
  115.  60, "FreeGC",                 WIN, FreeGC,        TERSE,      GRAIN1,
  116.  61, "ClearArea",              WIN, ClearArea,        DETAILED, GRAIN16,
  117.  62, "CopyArea",               WIN, CopyArea,        DETAILED, GRAIN16,
  118.  63, "CopyPlane",              WIN, CopyPlane,        DETAILED, GRAIN16,
  119.  64, "PolyPoint",              GFX, PolyPoint,        DETAILED, GRAIN1,
  120.  65, "PolyLine",               GFX, PolyLine,        DETAILED, GRAIN1,
  121.  66, "PolySegment",            GFX, PolySegment,    DETAILED, GRAIN1,
  122.  67, "PolyRectangle",          GFX, PolyRectangle,    DETAILED, GRAIN1,
  123.  68, "PolyArc",                GFX, default_request,    TERSE,      GRAIN1,
  124.  69, "FillPoly",               GFX, default_request,    TERSE,      GRAIN1,
  125.  70, "PolyFillRectangle",      GFX, PolyFillRectangle,    DETAILED, GRAIN256,
  126.  71, "PolyFillArc",            GFX, default_request,    TERSE,      GRAIN1,
  127.  72, "PutImage",               WIN, PutImage,        DETAILED, GRAIN16,
  128.  73, "GetImage",               WIN, GetImage,        DETAILED, GRAIN16,
  129.  74, "PolyText8",              TXT, PolyText8,        DETAILED, GRAIN1,
  130.  75, "PolyText16",             TXT, PolyText16,        DETAILED, GRAIN1,
  131.  76, "ImageText8",             TXT, ImageText8,        DETAILED, GRAIN1,
  132.  77, "ImageText16",            TXT, ImageText16,    DETAILED, GRAIN1,
  133.  78, "CreateColormap",         WIN, default_request,    TERSE,      GRAIN1,
  134.  79, "FreeColormap",           WIN, default_request,    TERSE,      GRAIN1,
  135.  80, "CopyColormapAndFree",    WIN, default_request,    TERSE,      GRAIN1,
  136.  81, "InstallColormap",        WIN, default_request,    TERSE,      GRAIN1,
  137.  82, "UninstallColormap",      WIN, default_request,    TERSE,      GRAIN1,
  138.  83, "ListInstalledColormaps", WIN, default_request,    TERSE,      GRAIN1,
  139.  84, "AllocColor",             WIN, default_request,    TERSE,      GRAIN1,
  140.  85, "AllocNamedColor",        WIN, default_request,    TERSE,      GRAIN1,
  141.  86, "AllocColorCells",        WIN, default_request,    TERSE,      GRAIN1,
  142.  87, "AllocColorPlanes",       WIN, default_request,    TERSE,      GRAIN1,
  143.  88, "FreeColors",             WIN, default_request,    TERSE,      GRAIN1,
  144.  89, "StoreColors",            WIN, default_request,    TERSE,      GRAIN1,
  145.  90, "StoreNamedColor",        WIN, default_request,    TERSE,      GRAIN1,
  146.  91, "QueryColors",            WIN, default_request,    TERSE,      GRAIN1,
  147.  92, "LookupColor",            WIN, default_request,    TERSE,      GRAIN1,
  148.  93, "CreateCursor",           WIN, default_request,    TERSE,      GRAIN1,
  149.  94, "CreateGlyphCursor",      WIN, default_request,    TERSE,      GRAIN1,
  150.  95, "FreeCursor",             WIN, default_request,    TERSE,      GRAIN1,
  151.  96, "RecolorCursor",          WIN, default_request,    TERSE,      GRAIN1,
  152.  97, "QueryBestSize",          WIN, default_request,    TERSE,      GRAIN1,
  153.  98, "QueryExtension",         WIN, default_request,    TERSE,      GRAIN1,
  154.  99, "ListExtensions",         WIN, default_request,    TERSE,      GRAIN1,
  155. 100, "ChangeKeyboardMapping",  WIN, default_request,    TERSE,      GRAIN1,
  156. 101, "GetKeyboardMapping",     WIN, default_request,    TERSE,      GRAIN1,
  157. 102, "ChangeKeyboardControl",  WIN, default_request,    TERSE,      GRAIN1,
  158. 103, "GetKeyboardControl",     WIN, default_request,    TERSE,      GRAIN1,
  159. 104, "Bell",                   WIN, default_request,    TERSE,      GRAIN1,
  160. 105, "ChangePointerControl",   WIN, default_request,    TERSE,      GRAIN1,
  161. 106, "GetPointerControl",      WIN, default_request,    TERSE,      GRAIN1,
  162. 107, "SetScreenSaver",         WIN, default_request,    TERSE,      GRAIN1,
  163. 108, "GetScreenSaver",         WIN, default_request,    TERSE,      GRAIN1,
  164. 109, "ChangeHosts",            WIN, default_request,    TERSE,      GRAIN1,
  165. 110, "ListHosts",              WIN, default_request,    TERSE,      GRAIN1,
  166. 111, "SetAccessControl",       WIN, default_request,    TERSE,      GRAIN1,
  167. 112, "SetCloseDownMode",       WIN, default_request,    TERSE,      GRAIN1,
  168. 113, "KillClient",             WIN, default_request,    TERSE,      GRAIN1,
  169. 114, "RotateProperties",       WIN, default_request,    TERSE,      GRAIN1,
  170. 115, "ForceScreenSaver",       WIN, default_request,    TERSE,      GRAIN1,
  171. 116, "SetPointerMapping",      WIN, default_request,    TERSE,      GRAIN1,
  172. 117, "GetPointerMapping",      WIN, default_request,    TERSE,      GRAIN1,
  173. 118, "SetModifierMapping",     WIN, default_request,    TERSE,      GRAIN1,
  174. 119, "GetModifierMapping",     WIN, default_request,    TERSE,      GRAIN1,
  175. 120, "Undefined Request",      WIN, default_request,    TERSE,      GRAIN1,
  176. 121, "Undefined Request",      WIN, default_request,    TERSE,      GRAIN1,
  177. 122, "Undefined Request",      WIN, default_request,    TERSE,      GRAIN1,
  178. 123, "Undefined Request",      WIN, default_request,    TERSE,      GRAIN1,
  179. 124, "Undefined Request",      WIN, default_request,    TERSE,      GRAIN1,
  180. 125, "Undefined Request",      WIN, default_request,    TERSE,      GRAIN1,
  181. 126, "Undefined Request",      WIN, default_request,    TERSE,      GRAIN1,
  182. 127, "NoOperation",            WIN, default_request,    TERSE,      GRAIN1,
  183. };
  184.  
  185. MsgType ReplyType[]={
  186.   0, "Undefined",        WIN, default_reply,    TERSE,      GRAIN1,
  187.   3, "GetWindowAttributes",    WIN, default_reply,    TERSE,      GRAIN1,
  188.  14, "GetGeometry",                WIN, default_reply,    TERSE,      GRAIN1,
  189.  15, "QueryTree",        WIN, default_reply,    TERSE,      GRAIN1,
  190.  16, "InternAtom",                 WIN, default_reply,    TERSE,      GRAIN1,
  191.  17, "GetAtomName",                WIN, default_reply,    TERSE,      GRAIN1,
  192.  20, "GetProperty",        WIN, default_reply,    TERSE,    GRAIN1,
  193.  21, "ListProperties",          WIN, default_reply,    TERSE,    GRAIN1,
  194.  23, "GetSelectionOwner",       WIN, default_reply,    TERSE,    GRAIN1,
  195.  26, "GrabPointer",        WIN, default_reply,  TERSE,    GRAIN1,
  196.  31, "GrabKeyboard",            WIN, default_reply,  TERSE,    GRAIN1,
  197.  38, "QueryPointer",            WIN, default_reply,  TERSE,    GRAIN1,
  198.  39, "GetMotionEvents",        WIN, default_reply,  TERSE,    GRAIN1,
  199.  40, "TranslateCoordinates",    WIN, default_reply,  TERSE,    GRAIN1,
  200.  43, "GetInputFocus",           WIN, default_reply,  TERSE,    GRAIN1,
  201.  44, "QueryKeymap",        WIN, default_reply,  TERSE,    GRAIN1,
  202.  47, "QueryFont",               WIN, default_reply,  TERSE,    GRAIN1,
  203.  48, "QueryTextExtents",        WIN, default_reply,  TERSE,    GRAIN1,
  204.  49, "ListFonts",        WIN, default_reply,  TERSE,    GRAIN1,
  205.  50, "ListFontsWithInfo",       WIN, default_reply,  TERSE,    GRAIN1,
  206.  52, "GetFontPath",             WIN, default_reply,  TERSE,    GRAIN1,
  207.  73, "GetImage",        WIN, default_reply,  TERSE,    GRAIN1,
  208.  83, "ListInstalledColormaps",  WIN, default_reply,  TERSE,    GRAIN1,
  209.  84, "AllocColor",              WIN, default_reply,  TERSE,    GRAIN1,
  210.  85, "AllocNamedColor",        WIN, default_reply,  TERSE,    GRAIN1,
  211.  86, "AllocColorCells",         WIN, default_reply,  TERSE,    GRAIN1,
  212.  87, "AllocColorPlanes",        WIN, default_reply,  TERSE,    GRAIN1,
  213.  91, "QueryColors",        WIN, default_reply,  TERSE,    GRAIN1,
  214.  92, "LookupColor",             WIN, default_reply,  TERSE,    GRAIN1,
  215.  97, "QueryBestSize",           WIN, default_reply,  TERSE,    GRAIN1,
  216.  98, "QueryExtension",        WIN, default_reply,  TERSE,    GRAIN1,
  217.  99, "ListExtensions",          WIN, default_reply,  TERSE,    GRAIN1,
  218. 101, "GetKeyboardMapping",      WIN, default_reply,  TERSE,    GRAIN1,
  219. 103, "GetKeyboardControl",    WIN, default_reply,  TERSE,    GRAIN1,
  220. 106, "GetPointerControl",       WIN, default_reply,  TERSE,    GRAIN1,
  221. 108, "GetScreenSaver",          WIN, default_reply,  TERSE,    GRAIN1,
  222. 110, "ListHosts",        WIN, default_reply,  TERSE,    GRAIN1,
  223. 116, "SetPointerMapping",       WIN, default_reply,  TERSE,    GRAIN1,
  224. 117, "GetPointerMapping",       WIN, default_reply,  TERSE,    GRAIN1,
  225. 118, "SetModifierMapping",    WIN, default_reply,  TERSE,    GRAIN1,
  226. 119, "GetModifierMapping",    WIN, default_reply,  TERSE,    GRAIN1,
  227. };
  228.  
  229. MsgType EventType[]={
  230.  0, "Undefined",        WIN, default_event,    TERSE,      GRAIN1,
  231.  1, "Undefined",        WIN, default_event,    TERSE,      GRAIN1,
  232.  2, "KeyPress",              WIN, default_event,    TERSE,      GRAIN1,
  233.  3, "KeyRelease",                  WIN, default_event,    TERSE,      GRAIN1,
  234.  4, "ButtonPress",        WIN, default_event,    TERSE,      GRAIN1,
  235.  5, "ButtonRelease",               WIN, default_event,    TERSE,      GRAIN1,
  236.  6, "MotionNotify",                WIN, default_event,    TERSE,      GRAIN1,
  237.  7, "EnterNotify",        WIN, default_event,    TERSE,      GRAIN1,
  238.  8, "LeaveNotify",                 WIN, default_event,    TERSE,      GRAIN1,
  239.  9, "FocusIn",                     WIN, default_event,    TERSE,      GRAIN1,
  240. 10, "FocusOut",            WIN, default_event,    TERSE,      GRAIN1,
  241. 11, "KeymapNotify",                WIN, default_event,    TERSE,      GRAIN1,
  242. 12, "Expose",                      WIN, default_event,    TERSE,      GRAIN1,
  243. 13, "GraphicsExposure",        WIN, default_event,    TERSE,      GRAIN1,
  244. 14, "NoExposure",                  WIN, default_event,    TERSE,      GRAIN1,
  245. 15, "VisibilityNotify",            WIN, default_event,    TERSE,      GRAIN1,
  246. 16, "CreateNotify",        WIN, default_event,    TERSE,      GRAIN1,
  247. 17, "DestroyNotify",               WIN, default_event,    TERSE,      GRAIN1,
  248. 18, "UnmapNotify",                 WIN, default_event,    TERSE,      GRAIN1,
  249. 19, "MapNotify",        WIN, default_event,    TERSE,      GRAIN1,
  250. 20, "MapRequest",                  WIN, default_event,    TERSE,      GRAIN1,
  251. 21, "ReparentNotify",              WIN, default_event,    TERSE,      GRAIN1,
  252. 22, "ConfigureNotify",        WIN, default_event,    TERSE,      GRAIN1,
  253. 23, "ConfigureRequest",            WIN, default_event,    TERSE,      GRAIN1,
  254. 24, "GravityNotify",               WIN, default_event,    TERSE,      GRAIN1,
  255. 25, "ResizeRequest",        WIN, default_event,    TERSE,      GRAIN1,
  256. 26, "CirculateNotify",             WIN, default_event,    TERSE,      GRAIN1,
  257. 27, "CirculateRequest",            WIN, default_event,    TERSE,      GRAIN1,
  258. 28, "PropertyNotify",        WIN, default_event,    TERSE,      GRAIN1,
  259. 29, "SelectionClear",              WIN, default_event,    TERSE,      GRAIN1,
  260. 30, "SelectionRequest",            WIN, default_event,    TERSE,      GRAIN1,
  261. 31, "SelectionNotify",        WIN, default_event,    TERSE,      GRAIN1,
  262. 32, "ColormapNotify",              WIN, default_event,    TERSE,      GRAIN1,
  263. 33, "ClientMessage",               WIN, default_event,    TERSE,      GRAIN1,
  264. 34, "MappingNotify",        WIN, default_event,    TERSE,      GRAIN1,
  265. };
  266.  
  267. MsgType ErrorType[]={
  268.  0, "Success",            WIN, default_error,    TERSE,      GRAIN1,
  269.  1, "Request",                     WIN, default_error,    TERSE,      GRAIN1,
  270.  2, "Value",                       WIN, default_error,    TERSE,      GRAIN1,
  271.  3, "Window",            WIN, default_error,    TERSE,      GRAIN1,
  272.  4, "Pixmap",                      WIN, default_error,    TERSE,      GRAIN1,
  273.  5, "Atom",                        WIN, default_error,    TERSE,      GRAIN1,
  274.  6, "Cursor",            WIN, default_error,    TERSE,      GRAIN1,
  275.  7, "Font",                        WIN, default_error,    TERSE,      GRAIN1,
  276.  8, "Match",                       WIN, default_error,    TERSE,      GRAIN1,
  277.  9, "Drawable",            WIN, default_error,    TERSE,      GRAIN1,
  278. 10, "Access",                      WIN, default_error,    TERSE,      GRAIN1,
  279. 11, "Alloc",                       WIN, default_error,    TERSE,      GRAIN1,
  280. 12, "Colormap",            WIN, default_error,    TERSE,      GRAIN1,
  281. 13, "GContext",                    WIN, default_error,    TERSE,      GRAIN1,
  282. 14, "IDChoice",                    WIN, default_error,    TERSE,      GRAIN1,
  283. 15, "Name",            WIN, default_error,    TERSE,      GRAIN1,
  284. 16, "Length",                      WIN, default_error,    TERSE,      GRAIN1,
  285. 17, "Implementation",        WIN, default_error,    TERSE,      GRAIN1,
  286. };
  287.  
  288. long default_request(fp, num, current_time)
  289. FILE *fp;        /* Data stream */
  290. int  num;        /* Request Number */
  291. long current_time;    /* Current time in ms */
  292. {
  293.     int length;
  294.     long bytes;
  295.     char sbuf[132], sbuf1[132];
  296.     char in_string[MAXSTRINGSIZE];
  297.     char *ptr;
  298.     Xattributes attributes;
  299.  
  300.     if (RequestStats[num].invoked == FALSE)
  301.     InitMsgStats(&RequestStats[num],current_time, RequestType[num].detailed,
  302.                     RequestType[num].size_grain);
  303.  
  304.     /* InitMsgStats(&RequestStats[num],current_time, DETAILED,
  305.                     RequestType[num].size_grain); */
  306.  
  307.     /* Extract the number of bytes in the message and return */
  308.     while (1) {
  309.      if (fgets(in_string, MAXSTRINGSIZE, fp) == NULL)
  310.     return(0);
  311.      _LINE_NUM++;
  312.      ptr = in_string;
  313.      while (isspace(*ptr)) ptr++;    /* Remove leading white space */
  314.      if (t_search(ptr, "request length" ) != NULL) {
  315.     sscanf(ptr,"%s %s %x", sbuf, sbuf1, &length);
  316.     goto end;
  317.       }
  318.     }
  319.     end:
  320.     bytes = length * 4;
  321.     attributes.bytes = bytes;
  322.     attributes.size  = (float) bytes;
  323.     update_profile(num, &attributes);
  324.  
  325.     /* Fill the data Structure for this message */
  326.     FillMsgStats(&RequestStats[num], current_time, bytes, bytes);
  327.     return (bytes);
  328. }
  329.  
  330. long default_reply(fp, index, current_time)
  331. FILE *fp;        /* Data stream */
  332. int  index;        /* reply index */
  333. long current_time;    /* Current time in ms */
  334. {
  335.     int length;
  336.     long bytes;
  337.     char sbuf[132], sbuf1[132];
  338.     char in_string[MAXSTRINGSIZE];
  339.     char *ptr;
  340.  
  341.     if (ReplyStats[index].invoked == FALSE)
  342.     InitMsgStats(&ReplyStats[index],current_time,ReplyType[index].detailed,
  343.                     ReplyType[index].size_grain);
  344.  
  345.     /* Extract the number of bytes in the message and return */
  346.    while (1) {
  347.        if (fgets(in_string, MAXSTRINGSIZE, fp) == NULL)
  348.       return(0);
  349.       _LINE_NUM++;
  350.       ptr = in_string;
  351.       while (isspace(*ptr)) ptr++;        /* Remove leading white space */
  352.       if (t_search(ptr, "reply length" ) != NULL) {
  353.         sscanf(ptr,"%s %s %x", sbuf, sbuf1, &length);
  354.         goto end;
  355.       }
  356.     }
  357.     end:
  358.     bytes = (length * 4) + 32;
  359.  
  360.     /* Fill the data Structure for this message */
  361.     FillMsgStats(&ReplyStats[index], current_time, bytes, bytes);
  362.     return (bytes);
  363. }
  364.  
  365. long default_event(fp, index, current_time)
  366. FILE *fp;        /* Data stream */
  367. int  index;        /* event index */
  368. long current_time;    /* Current time in ms */
  369. {
  370.     long bytes=32;    /* All events are 32 bytes in size */
  371.  
  372.     if (EventStats[index].invoked == FALSE)
  373.     InitMsgStats(&EventStats[index],current_time,EventType[index].detailed,
  374.                     EventType[index].size_grain);
  375.  
  376.     /* Fill the data Structure for this message */
  377.     FillMsgStats(&EventStats[index], current_time, bytes, bytes);
  378.     return (bytes);
  379. }
  380.  
  381. long default_error(fp, index, current_time)
  382. FILE *fp;        /* Data stream */
  383. int  index;        /* error index */
  384. long current_time;    /* Current time in ms */
  385. {
  386.     long bytes=32;    /* All errors are 32 bytes in size */
  387.  
  388.     if (ErrorStats[index].invoked == FALSE)
  389.     InitMsgStats(&ErrorStats[index],current_time,ErrorType[index].detailed,
  390.                     ErrorType[index].size_grain);
  391.  
  392.     /* Fill the data Structure for this message */
  393.     FillMsgStats(&ErrorStats[index], current_time, bytes, bytes);
  394.     return (bytes);
  395. }
  396.  
  397. /* Search the index value for the request string */
  398. int lookup_request(name)
  399. char *name;
  400. {
  401.     int index;
  402.  
  403.     for (index=0; index < MAXREQUESTS; index++)
  404.     if (!strcmp(name, RequestType[index].name))
  405.         return(index);
  406.     fprintf(stderr,"Error: Undefined Request: %s Line: %d\n",
  407.         name, _LINE_NUM);
  408.     fflush(stderr);
  409.     return(0);    /* Return undefined request */
  410. }
  411.  
  412. /* Search the index value for the reply string */
  413. int lookup_reply(name)
  414. char *name;
  415. {
  416.     int index;
  417.  
  418.     for (index=0; index < MAXREPLIES; index++)
  419.     if (!strcmp(name, ReplyType[index].name))
  420.         return(index);
  421.     fprintf(stderr,"Error: Undefined Reply: %s. Line %d\n",
  422.         name, _LINE_NUM);
  423.     fflush(stderr);
  424.     return(0);    /* Return undefined reply */
  425. }
  426.  
  427. /* Search the index value for the event string */
  428. int lookup_event(name)
  429. char *name;
  430. {
  431.     int index;
  432.  
  433.     for (index=0; index < MAXEVENTS; index++)
  434.     if (!strcmp(name, EventType[index].name))
  435.         return(index);
  436.     fprintf(stderr,"Error: Undefined Event: %s. Line %d\n",
  437.         name, _LINE_NUM);
  438.     fflush(stderr);
  439.     return(0);    /* Return undefined event */
  440. }
  441.  
  442. /* Search the index value for the error string */
  443. int lookup_error(name)
  444. char *name;
  445. {
  446.     int index;
  447.  
  448.     for (index=0; index < MAXERRORS; index++)
  449.     if (!strcmp(name, ErrorType[index].name))
  450.         return(index);
  451.     fprintf(stderr,"Error: Undefined Error: %s. Line %d\n",
  452.         name, _LINE_NUM);
  453.     fflush(stderr);
  454.     return(0);    /* Retrun undefined error */
  455. }
  456.